function searchTest() {
    //这里会抛出错误，因为oldValue 未定义
    var newValue = oldValue;
    //这里不会抛出错误，因为这是一次属性查询
    //newValue 的值是undefined
    var newValue = window.oldValue;
}

function showWidthAndHeight() {
    var pageWidth = window.innerWidth,
        pageHeight = window.innerHeight;
    if (typeof pageWidth !== "number") {
        console.log("not number");
        if (document.compatMode === "CSS1Compat") {
            console.log("CSS1Compat");
            pageWidth = document.documentElement.clientWidth;
            pageHeight = document.documentElement.clientHeight;
        } else {
            console.log("not CSS1Compat");
            pageWidth = document.body.clientWidth;
            pageHeight = document.body.clientHeight;
        }
    }
    console.log("WxH:" + pageWidth + "x" + pageHeight);
    alert("Width x Height:" + pageWidth + "x" + pageHeight);
}

function openTest() {
    // window.open("http://www.baidu.com/", "target");
    // window.open("http://www.baidu.com/", "_self");
    // window.open("http://www.baidu.com/", "_parent");
    // window.open("http://www.baidu.com/", "_top");
    window.open("http://www.baidu.com/", "_blank");
}

function openTest2() {
    window.open("http://www.baidu.com/", "_blank",
        "height=400,width=400,top=10,left=10,resizable=yes");
}

/**
 * 超时调用
 */
function setTimeoutTest() {
    setTimeout(function () {
        alert("Hello world!");
    }, 1000);
}

function clearTimeoutTest() {
    //设置超时调用
    var timeoutId = setTimeout(function () {
        alert("Hello world!");
    }, 1000);
    //注意：把它取消
    clearTimeout(timeoutId);
    console.log("取消成功");
}

/**
 * 间歇调用
 */
function setIntervalTest() {
    var count = 0;
    setInterval(function () {
        console.log("count:" + count++);
    }, 1000);
}

function clearIntervalTest() {
    var num = 0;
    var max = 5;
    var intervalId = null;

    function incrementNumber() {
        console.log("count:" + num++);
        //如果执行次数达到了max 设定的值，则取消后续尚未执行的调用
        if (num === max) {
            clearInterval(intervalId);
            alert("Done");
        }
    }

    intervalId = setInterval(incrementNumber, 1000);
}

/**
 * 避免了间歇调用 后一个间歇调用可能会在前一个间歇调用结束之前启动。
 */
function clearIntervalTest2() {
    var num = 0;
    var max = 5;

    function incrementNumber() {
        console.log("count:" + num++);
        //如果执行次数未达到max 设定的值，则设置另一次超时调用
        if (num < max) {
            setTimeout(incrementNumber, 1000);
        } else {
            alert("Done");
        }
    }

    setTimeout(incrementNumber, 1000);
}

function confirmTest() {
    if (confirm("Are you sure?")) {
        alert("I'm so glad you're sure! ");
    } else {
        alert("I'm sorry to hear you're not sure. ");
    }
}

function promptTest() {
    var result = prompt("What is your name? ", "");
    if (result !== null) {
        alert("Welcome, " + result);
    }
}

function printTest() {
    //显示“打印”对话框
    window.print();
}

function getQueryStringArgs() {
    //取得查询字符串并去掉开头的问号
    var qs = (location.search.length > 0 ? location.search.substring(1) : ""),
        //保存数据的对象
        args = {},
        //取得每一项
        items = qs.length ? qs.split("&") : [],
        item = null,
        name = null,
        value = null,
        //在for 循环中使用
        i = 0,
        len = items.length;
    //逐个将每一项添加到args 对象中
    for (i = 0; i < len; i++) {
        item = items[i].split("=");
        name = decodeURIComponent(item[0]);
        value = decodeURIComponent(item[1]);
        if (name.length) {
            args[name] = value;
        }
    }
    return args;
}

function searchTest() {
    //假设查询字符串是?q=javascript&num=10
    var args = getQueryStringArgs();
    alert(args["q"]); //"javascript"
    alert(args["num"]); //"10"`
}

function locationTest() {
    //假设初始URL 为http://www.wrox.com/WileyCDA/
//将URL 修改为"http://www.wrox.com/WileyCDA/#section1"
    location.hash = "#section1";
//将URL 修改为"http://www.wrox.com/WileyCDA/?q=javascript"
    location.search = "?q=javascript";
//将URL 修改为"http://www.yahoo.com/WileyCDA/"
    location.hostname = "www.yahoo.com";
//将URL 修改为"http://www.yahoo.com/mydir/"
    location.pathname = "mydir";
//将URL 修改为"http://www.yahoo.com:8080/WileyCDA/"
    location.port = 8080;
}

/**
 * 有历史记录
 */
function assignTest() {
    location.assign("https://www.baidu.com");
    // window.location = "https://www.baidu.com";
    // location.href = "https://www.baidu.com";
}

/**
 * 不会有历史记录
 */
function replaceTest() {
    setTimeout(function () {
        location.replace("http://blog.csdn.net/gubojun123");
    }, 1000);
}

function reloadTest() {
    location.reload(); //重新加载（有可能从缓存中加载）
    location.reload(true); //重新加载（从服务器重新加载）
}

//检测插件
function pluginsCheckTest() {
    //检测IE 中的插件
    function hasIEPlugin(name) {
        try {
            new ActiveXObject(name);
            return true;
        } catch (ex) {
            return false;
        }
    }

    //检测插件（在IE 中无效）
    function hasPlugin(name) {
        name = name.toLowerCase();
        for (var i = 0; i < navigator.plugins.length; i++) {
            if (navigator.plugins [i].name.toLowerCase().indexOf(name) > -1) {
                return true;
            }
        }
        return false;
    }

    //检测所有浏览器中的Flash
    function hasFlash() {
        var result = hasPlugin("Flash");
        if (!result) {
            result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
        }
        return result;
    }

    //检测所有浏览器中的QuickTime
    function hasQuickTime() {
        var result = hasPlugin("QuickTime");
        if (!result) {
            result = hasIEPlugin("QuickTime.QuickTime");
        }
        return result;
    }

    //检测Flash
    alert("has Flash:" + hasFlash());
    //检测QuickTime
    alert("has QuickTime:" + hasQuickTime());
}

function historyTest() {
    //后退一页
    history.go(-1);
    //前进一页
    history.go(1);
    //前进两页
    history.go(2);
    //跳转到最近的wrox.com 页面
    history.go("wrox.com");
    //跳转到最近的nczonline.net 页面
    history.go("nczonline.net");
    //后退一页
    history.back();
    //前进一页
    history.forward();
    if (history.length === 0) {
        //这应该是用户打开窗口后的第一个页面
    }
}